Many different types of communication networks are used for many different purposes. In networks that provide services to customers, host application servers are frequently used to provide various services and applications to network subscribers. However, a perennial problem has been how to accurately monitor, control and charge for the services that are provided to a subscriber. This problem has become exacerbated due to the increasingly distributed nature of modern communication networks. Specifically, such networks frequently consist of one application running on multiple different hosts in a distributed fashion to provide services to a greater number of subscribers in an efficient manner. Thus, there are potentially many different instances of an application running simultaneously. Thus, monitoring network usage and network element resource usage and determining which subscriber is using which portion of such resources is problematic. Additionally, each host may operate several different instances of different applications, thus compounding the complexity of such a determination, especially when network resources are shared among multiple applications. Furthermore, there is a need to control the number and types of application instances allowed to run in the network, including the need to cut off applications when they reach a budget limit, allocate new network elements when demand increases, and deallocate network elements when demand subsides.